﻿using NineSeas.Models;
using NineSeas.ViewModels;
using Orchard;
using Orchard.ContentManagement;
using System.Collections.Generic;

namespace NineSeas.Services
{
    public interface IChapterService : IDependency
    {
        dynamic GetToc(int bookId, PaginationInfo paging);
        dynamic GetToc(int bookId, PaginationInfo paging, VersionOptions options);
        IList<ChapterPart> GetByBookId(int bookId);
        IList<ChapterPart> GetByBookId(int bookId, PaginationInfo paging);
        IList<ChapterPart> GetByBookId(int bookId, VersionOptions options);
        IList<ChapterPart> GetByBookId(int bookId, PaginationInfo paging, VersionOptions options);
        ChapterPart Get(int id);
        ChapterPart Get(int id, VersionOptions options);
        ChapterPart GetNext(ChapterPart current);
        ChapterPart GetNext(ChapterPart current, VersionOptions options);
        ChapterPart GetPrevious(ChapterPart current);
        ChapterPart GetPrevious(ChapterPart current, VersionOptions options);
        ChapterPart GetFirst(int bookId);
        ChapterPart GetFirst(int bookId, VersionOptions options);
        ChapterPart GetLast(int bookId);
        ChapterPart GetLast(int bookId, VersionOptions options);
        ChapterViewModel GetView(int bookId, int? order);
        ChapterViewModel GetView(int bookId, int? order, VersionOptions options);
        int? GetLastOrder(int bookId);
        int? GetLastOrder(int bookId, VersionOptions options);
        void Move(int id, bool up);

        void Delete(int id);
        void Delete(ChapterPart chapter);
    }
}
